# Проект от партнёра университета

# Основная информация

Проект был написан в рамках дисциплины “Проектный практикум”, где студенты пишут сервисы согласно ТЗ от партнёров университета. Данный проект представляет собой микросервис для заказчика, который принимает запросы с помощью брокера сообщений RabbitMQ, обрабатывает файлы и отправляет ответ. Проект запускается в контейнере Docker из-под Ubuntu 20.+

# Основной функционал

В брокере сообщений RabbitMQ создаются все очереди: входная и выходная. Входная очередь ловит запросы, в которых передаются следующие данные:

- UUID операции
- Тип операции
- Пути к файлам для обработки
- Путь для результата обработки
- Параметры операции

В запросе приходят пути к файлам с данными лазерного или теплового сканирования. Тип операции принимает одно из пяти значений:

- unbag - распаковка данных в формате .bag в облако точек .ply
- axis_swap - смена осей в облаке точек .ply
- axiswise_rot - поворот облака точек на заданный угол (.ply)
- height_color - окрашивание облака точек в зависимости от высоты (.ply)
- conv_ply_xyz - конвертация облака точек .ply в формат .xyz

Для распаковки запроса используется библиотека pydantic, а для взаимодействия с RabbitMQ - aio_pika. Для обработки файлов используется библиотека, написанная заказчиком, а потому недоступная для коммита в общий доступ.

# Стэк

- aio_pika
- pydantic
- jsondiff
- loguru
- asyncio
- dotenv
- pytest
- pytest-asyncio
